]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
layout: Skip strut computation in the no-monitor case
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 13 Jul 2017 13:53:04 +0000 (15:53 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 13 Jul 2017 15:23:54 +0000 (17:23 +0200)
It's possible for updateRegions() to be called before monitors have
been properly initialized. Instead of throwing an error in that case,
just skip the strut computation (that doesn't make sense anyway without
a monitor).

https://bugzilla.gnome.org/show_bug.cgi?id=781471

js/ui/layout.js

index b1e7f94b0c7edf7b627e9bf2f4c80c69d7349cf3..4c11e1d7a8952a4945b3f6bf5ca91c2b76ba8b56 100644 (file)
@@ -969,7 +969,11 @@ const LayoutManager = new Lang.Class({
             if (actorData.affectsInputRegion && wantsInputRegion && actorData.actor.get_paint_visibility())
                 rects.push(new Meta.Rectangle({ x: x, y: y, width: w, height: h }));
 
-            if (actorData.affectsStruts) {
+            let monitor = null;
+            if (actorData.affectsStruts)
+                monitor = this.findMonitorForActor(actorData.actor);
+
+            if (monitor) {
                 // Limit struts to the size of the screen
                 let x1 = Math.max(x, 0);
                 let x2 = Math.min(x + w, global.screen_width);
@@ -986,7 +990,6 @@ const LayoutManager = new Lang.Class({
                 // spans the width/height across the middle of the
                 // screen, then we don't create a strut for it at all.
 
-                let monitor = this.findMonitorForActor(actorData.actor);
                 let side;
                 if (x1 <= monitor.x && x2 >= monitor.x + monitor.width) {
                     if (y1 <= monitor.y)